home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 June / SGI Freeware 1998 June.iso / dist / fw_bind.idb / usr / freeware / lib / bind / include / isc / assertions.h.z / assertions.h
C/C++ Source or Header  |  1998-05-26  |  3KB  |  123 lines

  1. /*
  2.  * Copyright (c) 1997 by Internet Software Consortium.
  3.  *
  4.  * Permission to use, copy, modify, and distribute this software for any
  5.  * purpose with or without fee is hereby granted, provided that the above
  6.  * copyright notice and this permission notice appear in all copies.
  7.  *
  8.  * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
  9.  * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
  10.  * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
  11.  * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  12.  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  13.  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
  14.  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  15.  * SOFTWARE.
  16.  */
  17.  
  18. /*
  19.  * $Id: assertions.h,v 8.1 1997/12/03 22:34:50 halley Exp $
  20.  */
  21.  
  22. #ifndef ASSERTIONS_H
  23. #define ASSERTIONS_H        1
  24.  
  25. typedef enum {
  26.     assert_require, assert_ensure, assert_insist, assert_invariant
  27. } assertion_type;
  28.  
  29. typedef void (*assertion_failure_callback)(char *, int, assertion_type, char *,
  30.                        int);
  31.  
  32. extern assertion_failure_callback __assertion_failed;
  33. void set_assertion_failure_callback(assertion_failure_callback f);
  34. char *assertion_type_to_text(assertion_type type);
  35.  
  36. #ifdef CHECK_ALL
  37. #define CHECK_REQUIRE        1
  38. #define CHECK_ENSURE        1
  39. #define CHECK_INSIST        1
  40. #define CHECK_INVARIANT        1
  41. #endif
  42.  
  43. #ifdef CHECK_NONE
  44. #define CHECK_REQUIRE        0
  45. #define CHECK_ENSURE        0
  46. #define CHECK_INSIST        0
  47. #define CHECK_INVARIANT        0
  48. #endif
  49.  
  50. #ifndef CHECK_REQUIRE
  51. #define CHECK_REQUIRE        1
  52. #endif
  53.  
  54. #ifndef CHECK_ENSURE
  55. #define CHECK_ENSURE        1
  56. #endif
  57.  
  58. #ifndef CHECK_INSIST
  59. #define CHECK_INSIST        1
  60. #endif
  61.  
  62. #ifndef CHECK_INVARIANT
  63. #define CHECK_INVARIANT        1
  64. #endif
  65.  
  66. #if CHECK_REQUIRE != 0
  67. #define REQUIRE(cond) \
  68.     ((void) ((cond) || \
  69.          ((__assertion_failed)(__FILE__, __LINE__, assert_require, \
  70.                        #cond, 0), 0)))
  71. #define REQUIRE_ERR(cond) \
  72.     ((void) ((cond) || \
  73.          ((__assertion_failed)(__FILE__, __LINE__, assert_require, \
  74.                        #cond, 1), 0)))
  75. #else
  76. #define REQUIRE(cond)        ((void) 0)
  77. #define REQUIRE_ERR(cond)    ((void) 0)
  78. #endif /* CHECK_REQUIRE */
  79.  
  80. #if CHECK_ENSURE != 0
  81. #define ENSURE(cond) \
  82.     ((void) ((cond) || \
  83.          ((__assertion_failed)(__FILE__, __LINE__, assert_ensure, \
  84.                        #cond, 0), 0)))
  85. #define ENSURE_ERR(cond) \
  86.     ((void) ((cond) || \
  87.          ((__assertion_failed)(__FILE__, __LINE__, assert_ensure, \
  88.                        #cond, 1), 0)))
  89. #else
  90. #define ENSURE(cond)        ((void) 0)
  91. #define ENSURE_ERR(cond)    ((void) 0)
  92. #endif /* CHECK_ENSURE */
  93.  
  94. #if CHECK_INSIST != 0
  95. #define INSIST(cond) \
  96.     ((void) ((cond) || \
  97.          ((__assertion_failed)(__FILE__, __LINE__, assert_insist, \
  98.                        #cond, 0), 0)))
  99. #define INSIST_ERR(cond) \
  100.     ((void) ((cond) || \
  101.          ((__assertion_failed)(__FILE__, __LINE__, assert_insist, \
  102.                        #cond, 1), 0)))
  103. #else
  104. #define INSIST(cond)        ((void) 0)
  105. #define INSIST_ERR(cond)    ((void) 0)
  106. #endif /* CHECK_INSIST */
  107.  
  108. #if CHECK_INVARIANT != 0
  109. #define INVARIANT(cond) \
  110.     ((void) ((cond) || \
  111.          ((__assertion_failed)(__FILE__, __LINE__, assert_invariant, \
  112.                        #cond, 0), 0)))
  113. #define INVARIANT_ERR(cond) \
  114.     ((void) ((cond) || \
  115.          ((__assertion_failed)(__FILE__, __LINE__, assert_invariant, \
  116.                        #cond, 1), 0)))
  117. #else
  118. #define INVARIANT(cond)        ((void) 0)
  119. #define INVARIANT_ERR(cond)    ((void) 0)
  120. #endif /* CHECK_INVARIANT */
  121.  
  122. #endif /* ASSERTIONS_H */
  123.